
Check $423e for TEXT cache

28c0 RAM = VRAM cache




; ===========================================================================
; ***************************************************************************
; ***************************************************************************
; ===========================================================================

; Other TEXT engine

$83:EF11 A9 FE       LDA #$FE                A:042E X:00DC Y:00A4 D:0100 DB:7E S:1BEA P:envMXdizc HC:1090 VC:025 00 Frames=5a
$83:EF13 85 6E       STA $6E    [$00:016E]   A:04FE X:00DC Y:00A4 D:0100 DB:7E S:1BEA P:eNvMXdizc HC:1102 VC:025 00 Frames=5a
$83:EF15 A0 01       LDY #$01                A:04FE X:00DC Y:00A4 D:0100 DB:7E S:1BEA P:eNvMXdizc HC:1122 VC:025 00 Frames=5a
$83:EF17 B7 5E       LDA [$5E],y[$2E:A4DD]   A:04FE X:00DC Y:0001 D:0100 DB:7E S:1BEA P:envMXdizc HC:1134 VC:025 00 Frames=5a
$83:EF19 85 69       STA $69    [$00:0169]   A:0404 X:00DC Y:0001 D:0100 DB:7E S:1BEA P:envMXdizc HC:1178 VC:025 00 Frames=5a
$83:EF1B 88          DEY                     A:0404 X:00DC Y:0001 D:0100 DB:7E S:1BEA P:envMXdizc HC:1198 VC:025 00 Frames=5a
$83:EF1C B7 5E       LDA [$5E],y[$2E:A4DC]   A:0404 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:envMXdiZc HC:1210 VC:025 00 Frames=5a
$83:EF1E 85 68       STA $68    [$00:0168]   A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:1254 VC:025 00 Frames=5a
$83:EF20 30 03       BMI $03    [$EF25]      A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:1274 VC:025 00 Frames=5a
$83:EF22 D0 16       BNE $16    [$EF3A]      A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:1286 VC:025 00 Frames=5a
(..)

$83:EF3A E6 5E       INC $5E    [$00:015E]   A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:1304 VC:025 00 Frames=5a
$83:EF3C D0 02       BNE $02    [$EF40]      A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:eNvMXdizc HC:1338 VC:025 00 Frames=5a
$83:EF40 A6 68       LDX $68    [$00:0168]   A:0406 X:00DC Y:0000 D:0100 DB:7E S:1BEA P:eNvMXdizc HC:1356 VC:025 00 Frames=5a
$83:EF42 A0 00       LDY #$00                A:0406 X:0006 Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:008 VC:026 00 Frames=5a
$83:EF44 A9 01       LDA #$01                A:0406 X:0006 Y:0000 D:0100 DB:7E S:1BEA P:envMXdiZc HC:020 VC:026 00 Frames=5a
$83:EF46 20 2F B4    JSR $B42F  [$7E:B42F]   A:0401 X:0006 Y:0000 D:0100 DB:7E S:1BEA P:envMXdizc HC:032 VC:026 00 Frames=5a

; ===========================================================================
; ***************************************************************************
; ***************************************************************************
; ===========================================================================

; Normal TEXT engine

$83:EA5C A9 FE       LDA #$FE                A:7F00 X:0066 Y:0030 D:0100 DB:7E S:1C78 P:envMXdiZC HC:770 VC:041 00 Frames=136
$83:EA5E 85 3E       STA $3E    [$00:013E]   A:7FFE X:0066 Y:0030 D:0100 DB:7E S:1C78 P:eNvMXdizC HC:782 VC:041 00 Frames=136

; ---------------------------------------------------------------------------

$83:EA60 A0 01       LDY #$01                A:7FFE X:0066 Y:0030 D:0100 DB:7E S:1C78 P:eNvMXdizC HC:802 VC:041 00 Frames=136
$83:EA62 B7 3F       LDA [$3F],y[$2B:897B]   A:7FFE X:0066 Y:0001 D:0100 DB:7E S:1C78 P:envMXdizC HC:814 VC:041 00 Frames=136
$83:EA64 85 27       STA $27    [$00:0127]   A:7F17 X:0066 Y:0001 D:0100 DB:7E S:1C78 P:envMXdizC HC:858 VC:041 00 Frames=136
$83:EA66 88          DEY                     A:7F17 X:0066 Y:0001 D:0100 DB:7E S:1C78 P:envMXdizC HC:878 VC:041 00 Frames=136
$83:EA67 B7 3F       LDA [$3F],y[$2B:897A]   A:7F17 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdiZC HC:890 VC:041 00 Frames=136
$83:EA69 85 26       STA $26    [$00:0126]   A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:934 VC:041 00 Frames=136

; $80+ = <EXTEND>

$83:EA6B 30 03       BMI $03    [$EA70]      A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:954 VC:041 00 Frames=136

; $00 = <STOP>

$83:EA6D D0 16       BNE $16    [$EA85]      A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:966 VC:041 00 Frames=136
$83:EA6F 60          RTS                     A:0100 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdiZC HC:118 VC:036 00 Frames=19a

; ---------------------------------------------------------------------------

; 2-byte entry

$83:EA70 A5 3F       LDA $3F    [$00:013F]   A:0082 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:eNvMXdizC HC:592 VC:036 00 Frames=168
$83:EA72 18          CLC                     A:0074 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:612 VC:036 00 Frames=168
$83:EA73 69 02       ADC #$02                A:0074 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizc HC:624 VC:036 00 Frames=168
$83:EA75 85 3F       STA $3F    [$00:013F]   A:0076 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizc HC:636 VC:036 00 Frames=168

; Offset bump

$83:EA77 90 02       BCC $02    [$EA7B]      A:0076 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizc HC:656 VC:036 00 Frames=168
(..)

; Y=high-7, X=low-8

$83:EA7B A5 26       LDA $26    [$00:0126]   A:0076 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizc HC:674 VC:036 00 Frames=168
$83:EA7D 29 7F       AND #$7F                A:0082 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:eNvMXdizc HC:694 VC:036 00 Frames=168
$83:EA7F A8          TAY                     A:0002 X:0001 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizc HC:706 VC:036 00 Frames=168
$83:EA80 A6 27       LDX $27    [$00:0127]   A:0002 X:0001 Y:0002 D:0100 DB:7E S:1C78 P:envMXdizc HC:718 VC:036 00 Frames=168
$83:EA82 4C 8F EA    JMP $EA8F  [$7E:EA8F]   A:0002 X:00DB Y:0002 D:0100 DB:7E S:1C78 P:eNvMXdizc HC:738 VC:036 00 Frames=168

; ---------------------------------------------------------------------------

; Offset bump (1 byte)

$83:EA85 E6 3F       INC $3F    [$00:013F]   A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:984 VC:041 00 Frames=136
$83:EA87 D0 02       BNE $02    [$EA8B]      A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:1018 VC:041 00 Frames=136
$83:EA89 E6 40       INC $40    [$00:0140]   A:7F22 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:1084 VC:041 00 Frames=1de

; Y=0, X=low-7

$83:EA8B A6 26       LDX $26    [$00:0126]   A:7F20 X:0066 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:1078 VC:041 00 Frames=136
$83:EA8D A0 00       LDY #$00                A:7F20 X:0020 Y:0000 D:0100 DB:7E S:1C78 P:envMXdizC HC:1098 VC:041 00 Frames=136

; ---------------------------------------------------------------------------

; Flag

$83:EA8F A9 00       LDA #$00                A:7F20 X:0020 Y:0000 D:0100 DB:7E S:1C78 P:envMXdiZC HC:1110 VC:041 00 Frames=136

$83:EA91 20 2F B4    JSR $B42F  [$7E:B42F]   A:7F00 X:0020 Y:0000 D:0100 DB:7E S:1C78 P:envMXdiZC HC:1122 VC:041 00 Frames=136
$83:EA94 20 9A EA    JSR $EA9A  [$7E:EA9A]   A:7F04 X:000B Y:000C D:0100 DB:7E S:1C78 P:eNvMXdizc HC:096 VC:045 00 Frames=136
$83:EA97 4C 60 EA    JMP $EA60  [$7E:EA60]   A:0000 X:0002 Y:00FF D:0100 DB:7E S:1C78 P:envMXdiZc HC:1240 VC:039 00 Frames=138

; ===========================================================================
; ***************************************************************************
; ***************************************************************************
; ===========================================================================

; Save values

$83:B42F 86 07       STX $07    [$00:0107]   A:7F00 X:0022 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZC HC:1162 VC:041 00 Frames=5a
$83:B431 84 08       STY $08    [$00:0108]   A:7F00 X:0022 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZC HC:1182 VC:041 00 Frames=5a

; note: INDEX TABLE #2

$83:B433 48          PHA                     A:7F00 X:0022 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZC HC:1202 VC:041 00 Frames=5a
$83:B434 A2 02       LDX #$02                A:7F00 X:0022 Y:0000 D:0100 DB:7E S:1C75 P:envMXdiZC HC:1222 VC:041 00 Frames=5a
$83:B436 20 D3 B4    JSR $B4D3  [$7E:B4D3]   A:7F00 X:0002 Y:0000 D:0100 DB:7E S:1C75 P:envMXdizC HC:1234 VC:041 00 Frames=5a

; 2 bits for UPPER length

$83:B439 A5 07       LDA $07    [$00:0107]   A:7F88 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:1356 VC:042 00 Frames=5a
$83:B43B 29 C0       AND #$C0                A:7F79 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:008 VC:043 00 Frames=5a
$83:B43D 4A          LSR A                   A:7F40 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:020 VC:043 00 Frames=5a
$83:B43E 4A          LSR A                   A:7F20 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:032 VC:043 00 Frames=5a
$83:B43F 4A          LSR A                   A:7F10 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:044 VC:043 00 Frames=5a
$83:B440 85 0A       STA $0A    [$00:010A]   A:7F08 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:056 VC:043 00 Frames=5a

; 3 bits for LOWER length

$83:B442 A5 09       LDA $09    [$00:0109]   A:7F08 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:076 VC:043 00 Frames=5a
$83:B444 29 E0       AND #$E0                A:7F88 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:096 VC:043 00 Frames=5a
$83:B446 4A          LSR A                   A:7F80 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:108 VC:043 00 Frames=5a
$83:B447 4A          LSR A                   A:7F40 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:120 VC:043 00 Frames=5a
$83:B448 4A          LSR A                   A:7F20 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:132 VC:043 00 Frames=5a
$83:B449 4A          LSR A                   A:7F10 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:144 VC:043 00 Frames=5a
$83:B44A 4A          LSR A                   A:7F08 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:156 VC:043 00 Frames=5a
$83:B44B 05 0A       ORA $0A    [$00:010A]   A:7F04 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:168 VC:043 00 Frames=5a

; Total length = 5 bits

$83:B44D 85 0A       STA $0A    [$00:010A]   A:7F0C X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:188 VC:043 00 Frames=5a

; --------------------------------------------------------------------------

; upper-24 / middle-24 (4 / 2)

$83:B44F A5 07       LDA $07    [$00:0107]   A:7F0C X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:208 VC:043 00 Frames=5a
$83:B451 29 3F       AND #$3F                A:7F79 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:228 VC:043 00 Frames=5a
$83:B453 85 05       STA $05    [$00:0105]   A:7F39 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:240 VC:043 00 Frames=5a

; middle-24 (5 low bits)

$83:B455 A5 09       LDA $09    [$00:0109]   A:7F39 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:260 VC:043 00 Frames=5a
$83:B457 29 1F       AND #$1F                A:7F88 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:280 VC:043 00 Frames=5a
$83:B459 85 04       STA $04    [$00:0104]   A:7F08 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:292 VC:043 00 Frames=5a

; lower-24 (8 bits)

$83:B45B A5 08       LDA $08    [$00:0108]   A:7F08 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:312 VC:043 00 Frames=5a
$83:B45D 85 03       STA $03    [$00:0103]   A:7FCC X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:332 VC:043 00 Frames=5a


; bank/offset UNPACKER

$83:B45F 20 68 80    JSR $8068  [$7E:8068]   A:7FCC X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:352 VC:043 00 Frames=5a


; FINAL 24-bit ptr

$83:B462 A5 03       LDA $03    [$00:0103]   A:7F2E X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:696 VC:043 00 Frames=5a
$83:B464 85 07       STA $07    [$00:0107]   A:7FCC X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:716 VC:043 00 Frames=5a
$83:B466 A5 04       LDA $04    [$00:0104]   A:7FCC X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:736 VC:043 00 Frames=5a
$83:B468 85 08       STA $08    [$00:0108]   A:7FA8 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:756 VC:043 00 Frames=5a
$83:B46A A5 05       LDA $05    [$00:0105]   A:7FA8 X:0002 Y:0002 D:0100 DB:7E S:1C75 P:eNvMXdizc HC:776 VC:043 00 Frames=5a
$83:B46C 85 09       STA $09    [$00:0109]   A:7F2E X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:796 VC:043 00 Frames=5a

; ==========================================================================

; Check input flag

$83:B46E A2 00       LDX #$00                A:7F2E X:0002 Y:0002 D:0100 DB:7E S:1C75 P:envMXdizc HC:856 VC:043 00 Frames=1de
$83:B470 68          PLA                     A:7F2E X:0000 Y:0002 D:0100 DB:7E S:1C75 P:envMXdiZc HC:868 VC:043 00 Frames=1de
$83:B471 F0 02       BEQ $02    [$B475]      A:7F00 X:0000 Y:0002 D:0100 DB:7E S:1C76 P:envMXdiZc HC:894 VC:043 00 Frames=1de
(..)

; --------------------------------------------------------------------------

; Header byte #1 = control code flag

$83:B475 A0 00       LDY #$00                A:7F00 X:0000 Y:0002 D:0100 DB:7E S:1C76 P:envMXdiZc HC:912 VC:043 00 Frames=1de
$83:B477 B7 07       LDA [$07],y[$2E:A8CC]   A:7F00 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZc HC:924 VC:043 00 Frames=1de
$83:B479 D0 0C       BNE $0C    [$B487]      A:7F00 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZc HC:968 VC:043 00 Frames=1de


; Header byte #2 = num text bytes (control code follows)

$83:B47B C8          INY                     A:7F00 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdiZc HC:980 VC:043 00 Frames=1de
$83:B47C B7 07       LDA [$07],y[$2E:A8CD]   A:7F00 X:0000 Y:0001 D:0100 DB:7E S:1C76 P:envMXdizc HC:992 VC:043 00 Frames=1de
$83:B47E 09 80       ORA #$80                A:7F06 X:0000 Y:0001 D:0100 DB:7E S:1C76 P:envMXdizc HC:1078 VC:043 00 Frames=1de
$83:B480 9D 46 41    STA $4146,x[$7E:4146]   A:7F86 X:0000 Y:0001 D:0100 DB:7E S:1C76 P:eNvMXdizc HC:1090 VC:043 00 Frames=1de

$83:B483 C8          INY                     A:7F86 X:0000 Y:0001 D:0100 DB:7E S:1C76 P:eNvMXdizc HC:1116 VC:043 00 Frames=1de
$83:B484 E8          INX                     A:7F86 X:0000 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1128 VC:043 00 Frames=1de
$83:B485 D0 06       BNE $06    [$B48D]      A:7F86 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1140 VC:043 00 Frames=1de


; No control code - pure text

$83:B487 A5 0A       LDA $0A    [$00:010A]   A:0054 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdizc HC:696 VC:038 00 Frames=3f
$83:B489 9D 46 41    STA $4146,x[$7E:4146]   A:0005 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdizc HC:716 VC:038 00 Frames=3f
$83:B48C E8          INX                     A:0005 X:0000 Y:0000 D:0100 DB:7E S:1C76 P:envMXdizc HC:742 VC:038 00 Frames=3f

; --------------------------------------------------------------------------

; Copy substring

$83:B48D C6 0A       DEC $0A    [$00:010A]   A:7F86 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1158 VC:043 00 Frames=1de
$83:B48F 30 09       BMI $09    [$B49A]      A:7F86 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1192 VC:043 00 Frames=1de

$83:B491 B7 07       LDA [$07],y[$2E:A8CE]   A:7F86 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1204 VC:043 00 Frames=1de
$83:B493 9D 46 41    STA $4146,x[$7E:4147]   A:7F50 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1248 VC:043 00 Frames=1de
$83:B496 E8          INX                     A:7F50 X:0001 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1274 VC:043 00 Frames=1de
$83:B497 C8          INY                     A:7F50 X:0002 Y:0002 D:0100 DB:7E S:1C76 P:envMXdizc HC:1286 VC:043 00 Frames=1de

$83:B498 D0 F3       BNE $F3    [$B48D]      A:7F50 X:0002 Y:0003 D:0100 DB:7E S:1C76 P:envMXdizc HC:1298 VC:043 00 Frames=1de
$83:B49A 60          RTS                     A:7F06 X:000D Y:000E D:0100 DB:7E S:1C76 P:eNvMXdizc HC:412 VC:045 00 Frames=1de
